// 1，态射是类型之间的映射，函子是范畴之间的映射。


// class Container{
//   constructor(value){
//     this._value=value
//   }
//   map(fn){
//     return new Container(fn(this._value))
//   }
// }
// const r= new Container(6).map(x=>x+2)
// console.log(r)

// 二，将实例方法map中的calss本身用静态方法返回.
class Container{
  constructor(value){
    this._value=value
  }
  static of(value){
    return new Container(value)
  }
  map(fn){
    return Container.of(fn(this._value))
  }
}
const r = Container.of(5).map(x=>x*x).map(x=>x+2)
console.log(r)